#ifndef _ENCODING_HELPER_H
#define _ENCODING_HELPER_H

#include "../LibUtil.h"

LIB_UTIL_NAMESPACE_BEGIN

class EncodingHelper
{
public:
	enum EncodingType {
		UTF8 = 0,
		GBK,
		GB2312,
		Unicode,
	};

	 static bool TransformCharset(const char* szIn, 
								  char** szOut, 
								  const char* szCharsetIn,
								  const char* szCharsetOut);

	 static bool TransformCharset(const wchar_t* szIn, 
								 char** szOut, 
								 const char* szCharsetIn,
								 const char* szCharsetOut);

	 static bool TransformCharset(const char* szIn,
								 wchar_t** szOut,
								 const char* szCharsetIn,
								 const char* szCharsetOut);

	 static bool TransformCharset(const char* szIn, 
								  char** szOut, 
								  EncodingType inType,
								  EncodingType outType);

	 static bool UnicodeToUTF8(const wchar_t* szIn, char** szOut);

	 static bool UTF8ToUnicode(const char* szIn, wchar_t** szOut);

	 static bool UrlEncode(const char* szIn, 
						   char** szOut,
						   const char* szCharsetIn = NULL,
						   const char* szCharsetOut = NULL);

	 static bool UrlEncode(const char* szIn, 
						   char** szOut,
						   EncodingType inType,
						   EncodingType outType);

	 static void FreeString(void* sz);
private:
	EncodingHelper(void);
	~EncodingHelper(void);
};

LIB_UTIL_NAMESPACE_END

#endif //_ENCODING_HELPER_H